/*
*
* Copyright (c) 2011 Vaulting Systems International
* 
* Permission is hereby granted, free of charge, to any person obtaining a copy 
* of this software and associated documentation files (the "Software"), to deal 
* in the Software without restriction, including without limitation the rights 
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
* of the Software, and to permit persons to whom the Software is furnished to do  
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all  
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
package com.ekeyman.securecredit.util;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

import com.ekeymanlib.dto.SearchFilter;

public class JSONUtil { 

	/*
	 * Extract search parameters from the JSON string provided by the JQuery grid.
	 */
	public static List<SearchFilter> buildSearchFilter(String filters){
		List<SearchFilter> searchFilters = null;
		
		if(filters != null && !filters.equalsIgnoreCase("")){
			
			JSONObject jsonFilter = (JSONObject) JSONSerializer.toJSON(filters);
			JSONArray rules = jsonFilter.getJSONArray("rules");
			int rulesCount = JSONArray.getDimensions(rules)[0];
			
			if(rulesCount > 0){
				searchFilters = new ArrayList<SearchFilter>();
				for (int i = 0; i < rulesCount; i++) {
					JSONObject rule = rules.getJSONObject(i);
					SearchFilter sf = new SearchFilter();
					sf.setField(rule.getString("field"));
					sf.setOp(rule.getString("op"));
					sf.setData(rule.getString("data"));
					searchFilters.add(sf);
				}
			}
		}
		
		return searchFilters;
	}
}
